/*
 * ColaRemotaReceptorDirecto.h
 *
 *  Created on: Dec 21, 2013
 *      Author: m
 */

#ifndef COLAREMOTARECEPTORDIRECTO_H_
#define COLAREMOTARECEPTORDIRECTO_H_

#include "MessageQueue.h"
#include "ColaRemotaComun.h"
#include "CPrinter.h"
#include "DNSService.h"

using ipc::MessageQueue;

class ColaRemotaReceptorDirecto
{
protected:
    MessageQueue<PaqueteColaRemota> m_colaMensajes;
    int m_mtype;

public:
    ColaRemotaReceptorDirecto( std::string nombreColaRemota ) :
        m_colaMensajes( MessageQueue<PaqueteColaRemota>::get( IPC_BASEFILE, COLA_MENSAJES_BROKER ) ),
        m_mtype( DNSService::resolve( nombreColaRemota ) )
    {
    }

    ~ColaRemotaReceptorDirecto()
    {
    }

    template< class T >
        T recibirMensaje()
    {
        PaqueteColaRemota msg;
        T dato;

        msg = m_colaMensajes.get( m_mtype );

        memcpy( &dato, msg.data, sizeof(T) );

        return dato;
    }

};

#endif /* COLAREMOTARECEPTORDIRECTO_H_ */
